<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
  <title>Version 1.72.0</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="icon" href="/favicon.ico" type="image/ico" />
  <link rel="stylesheet" type="text/css" href="/style-v2/section-boost.css" />

  <style type="text/css">
/*<![CDATA[*/
  #content .news-description ul {
    list-style: none;
  }
  #content .news-description ul ul {
    list-style: circle;
  }
  /*]]>*/
  </style>

  <!--[if IE 7]> <style type="text/css"> body { behavior: url(/style-v2/csshover3.htc); } </style> <![endif]-->
</head>
<!-- Don't edit this page! It's generated by site-tools/site-tools.py -->
<body>
  <div id="heading">
    <!--#include virtual="/common/heading.html" -->  </div>

  <div id="body">
    <div id="body-inner">
      <div id="content">
        <div class="section" id="intro">
          <div class="section-0">
            <div class="section-title">
              <h1>Version 1.72.0</h1>
            </div>

            <div class="section-body">
              <h2><span class=
              "news-title">Version 1.72.0</span></h2>

              <p><span class=news-date">December 11th, 2019 18:06 GMT</span></p>
              <p><a href="/doc/libs/1_72_0/">Documentation</a>
              <table class="download-table"><caption>Downloads</caption><tr><th scope="col">Platform</th><th scope="col">File</th><th scope="col">SHA256 Hash</th></tr>
<tr><th scope="row" rowspan="2">unix</th><td><a href="https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.bz2">boost_1_72_0.tar.bz2</a></td><td>59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722</td></tr><tr><td><a href="https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz">boost_1_72_0.tar.gz</a></td><td>c66e88d5786f2ca4dbebb14e06b566fb642a1a6947ad8cc9091f9f445134143f</td></tr>
<tr><th scope="row" rowspan="2">windows</th><td><a href="https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.7z">boost_1_72_0.7z</a></td><td>247a91dd7e4d9dd3c4b954b532fbc167ba62dc15ab834e5ad893d7c3f9eb5f0f</td></tr><tr><td><a href="https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.zip">boost_1_72_0.zip</a></td><td>8c20440aaba21dd963c0f7149517445f50c62ce4eb689df2b5544cc89e6e621e</td></tr></table>
              <div class="news-description">
                <div class="description">


  <div id="version_1_72_0.known_issues">
    <h3><span class="link">Known Issues</span></h3>
    <p>
      These are patches from library authors which were found too late to be fixed
      in the release. Be careful as they have not been through the normal testing
      process.
    </p>
    <ul>
      <li>
        <div>
          Revert cease dependence on range
          <ul>
            <li>
              <div>
                <a href="/patches/1_72_0/0001-revert-cease-dependence-on-range.patch">Coroutine
                patch</a>
              </div>
            </li>
          </ul>
        </div>
      </li>
    </ul>
  </div>
  <div id="version_1_72_0.updated_libraries">
    <h3><span class="link">Updated Libraries</span></h3>
    <ul>
      <li>
        <div>
          <span class="library"><a href="/libs/asio/">Asio</a>:</span>
          <ul>
            <li>
              <div>
                Changed the <code><span class="identifier">async_initiate</span></code>
                helper function to automatically deduce its return type, for C++11
                or later.
              </div>
            </li>
            <li>
              <div>
                Changed all asynchronous operations to use automatically deduced
                return types, for C++14 or later.
              </div>
            </li>
            <li>
              <div>
                Introduced concepts to support <code><span class="identifier">async_initiate</span></code>.
              </div>
            </li>
            <li>
              <div>
                Added the nested template type <code><span class="identifier">rebind_executor</span></code>
                to all I/O object types.
              </div>
            </li>
            <li>
              <div>
                Changed the initiation function objects to report their associated
                I/O executor via the nested type <code><span class="identifier">executor_type</span></code>
                and member function <code><span class="identifier">get_executor</span><span class="special">()</span></code>.
              </div>
            </li>
            <li>
              <div>
                Added the <code><span class="identifier">default_completion_token</span></code>
                trait, giving I/O executor types an associated default completion
                token type for use with asynchronous operations. This trait is specialised
                for the <code><span class="identifier">use_awaitable</span></code>
                completion token, for example, to allow asynchronous operations to
                be used as follows: <code><span class="identifier">co_await</span>
                <span class="identifier">socket</span><span class="special">.</span><span class="identifier">async_connect</span><span class="special">(</span><span class="identifier">my_endpoint</span><span class="special">)</span></code>.
              </div>
            </li>
            <li>
              <div>
                Added missing <code><span class="identifier">async_initiate</span></code>
                to the Windows-specific I/O objects' asynchronous operations.
              </div>
            </li>
            <li>
              <div>
                Ensured that the executor type is propagated to newly accepted sockets.
              </div>
            </li>
            <li>
              <div>
                Changed to require that <code><span class="identifier">Protocol</span></code>
                copy and move operations never throw.
              </div>
            </li>
            <li>
              <div>
                Changed to require that <code><span class="identifier">Endpoint</span></code>
                default constructor and move operations never throw.
              </div>
            </li>
            <li>
              <div>
                Added the <code><span class="keyword">noexcept</span></code> qualifier
                to protocol accessors.
              </div>
            </li>
            <li>
              <div>
                Added the <code><span class="keyword">noexcept</span></code> qualifier
                to socket move constructors.
              </div>
            </li>
            <li>
              <div>
                Fixed issues associated with opening serial ports on Windows:
                <ul>
                  <li>
                    <div>
                      Use the correct constant to initialise the RTS control flag.
                    </div>
                  </li>
                  <li>
                    <div>
                      Specify a default baud rate (9600).
                    </div>
                  </li>
                </ul>
              </div>
            </li>
            <li>
              <div>
                Fixed a lost "outstanding work count" that can occur when
                an asynchronous accept operation is automatically restarted.
              </div>
            </li>
            <li>
              <div>
                Consult the <a href="/doc/libs/1_72_0/doc/html/boost_asio/history.html">Revision
                History</a> for further details.
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/atomic/">Atomic</a>:</span>
          <ul>
            <li>
              <div>
                Added a workaround for <code><span class="identifier">__float128</span></code>
                not being considered as a floating point type by some versions of
                libstdc++.
              </div>
            </li>
            <li>
              <div>
                Improved compatibility with clang-win compiler.
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/beast/">Beast</a>:</span>
          <ul>
            <li>
              <div>
                This is a maintenance update containing bug fixes, and updates to
                use the new features delivered in Boost.Asio.
              </div>
            </li>
            <li>
              <div>
                We'd love to know how you or your company use Beast, consider adding
                an entry to the <a href="https://github.com/boostorg/beast/wiki/Companies-and-Individuals-Using-Beast">Companies
                and Individuals Using Beast</a> list.
              </div>
            </li>
            <li>
              <div>
                See the full <a href="/libs/beast/doc/html/beast/release_notes.html">Release
                Notes</a> for a complete list of changes.
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/circular_buffer/">Circular Buffer</a>:</span>
          <ul>
            <li>
              <div>
                Fix issue <a href="https://github.com/boostorg/circular_buffer/issues/29">#29</a>: <code><span class="identifier">max_size</span><span class="special">()</span></code> now takes the allocator's <code><span class="identifier">max_size</span><span class="special">()</span></code>
                into account. (Glen Fernandes)
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/context/">Context</a>:</span>
          <ul>
            <li>
              <div>
                architecture s390x supported
              </div>
            </li>
            <li>
              <div>
                execution_context removed
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/endian/">Endian</a>:</span>
          <ul>
            <li>
              <div>
                Made <code><span class="identifier">endian_reverse</span></code>,
                <code><span class="identifier">conditional_reverse</span></code>
                and <code><span class="special">*</span><span class="identifier">_to_</span><span class="special">*</span></code> <code><span class="keyword">constexpr</span></code>
                on GCC and Clang
              </div>
            </li>
            <li>
              <div>
                Added convenience load and store functions
              </div>
            </li>
            <li>
              <div>
                Added floating point convenience typedefs
              </div>
            </li>
            <li>
              <div>
                Added a non-const overload of <code><span class="identifier">data</span><span class="special">()</span></code>; changed its return type to <code><span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">*</span></code>
              </div>
            </li>
            <li>
              <div>
                Added <code><span class="identifier">__int128</span></code> support
                to <code><span class="identifier">endian_reverse</span></code>
                when available
              </div>
            </li>
            <li>
              <div>
                Added a convenience header <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">endian</span><span class="special">.</span><span class="identifier">hpp</span></code>
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/filesystem/">Filesystem</a>:</span>
          <ul>
            <li>
              <div>
                Extracted <code><span class="identifier">filesystem_error</span></code>
                to <code><span class="identifier">exception</span><span class="special">.</span><span class="identifier">hpp</span></code>; <code><span class="identifier">file_status</span></code>
                and associated enums and functions to <code><span class="identifier">file_status</span><span class="special">.</span><span class="identifier">hpp</span></code>;
                <code><span class="identifier">directory_entry</span></code>,
                <code><span class="identifier">directory_iterator</span></code>
                and <code><span class="identifier">recursive_directory_iterator</span></code>
                to <code><span class="identifier">directory</span><span class="special">.</span><span class="identifier">hpp</span></code>.
              </div>
            </li>
            <li>
              <div>
                <strong>Deprecated:</strong> For backward compatibility
                <code><span class="identifier">operations</span><span class="special">.</span><span class="identifier">hpp</span></code> still includes the new headers
                <code><span class="identifier">exception</span><span class="special">.</span><span class="identifier">hpp</span></code>, <code><span class="identifier">file_status</span><span class="special">.</span><span class="identifier">hpp</span></code>
                and <code><span class="identifier">directory</span><span class="special">.</span><span class="identifier">hpp</span></code>, unless <code><span class="identifier">BOOST_FILESYSTEM_NO_DEPRECATED</span></code>
                macro is defined. These implicit includes are considered deprecated
                and will be removed in a future release. Users are encouraged to
                include the new headers directly or include <code><span class="identifier">filesystem</span><span class="special">.</span><span class="identifier">hpp</span></code>.
              </div>
            </li>
            <li>
              <div>
                The <code><span class="identifier">filesystem_error</span></code>
                exception is now implemented in the compiled library of Boost.Filesystem.
                Users may need to add linking with Boost.Filesystem library in their
                projects.
              </div>
            </li>
            <li>
              <div>
                On POSIX.1-2008 platforms, use <code><span class="identifier">utimensat</span></code>
                instead of <code><span class="identifier">utime</span></code>.
                <code><span class="identifier">utime</span></code> is declared
                obsolete in POSIX.1-2008 and can be disabled e.g. in uClibc-ng. (<a href="https://github.com/boostorg/filesystem/pull/115">PR#115</a>)
              </div>
            </li>
            <li>
              <div>
                <code><span class="identifier">directory_iterator</span></code>
                is now left in the end state on memory allocation errors.
              </div>
            </li>
            <li>
              <div>
                In <code><span class="identifier">directory_iterator</span></code>
                on POSIX systems, support for <code><span class="identifier">readdir</span></code>/<code><span class="identifier">readdir_r</span></code> has been reworked to
                avoid memory allocations for <code><span class="identifier">dirent</span></code>
                structures when <code><span class="identifier">readdir</span></code>
                is used. This reduces memory consumption and eliminates the possibility
                of buffer overruns in case if <code><span class="identifier">readdir</span></code>
                produces a very long directory name.
              </div>
            </li>
            <li>
              <div>
                On Windows, use Boost.WinAPI to select the target Windows version.
              </div>
            </li>
            <li>
              <div>
                <strong>New:</strong> Added <code><span class="identifier">directory_options</span></code>
                enum, which reflects the same named enum from C++20. The enum is
                supported in <code><span class="identifier">directory_iterator</span></code>
                and <code><span class="identifier">recursive_directory_iterator</span></code>
                to customize iteration behavior. In particular, the iterators now
                support skipping directories that can't be opened due to insufficient
                permissions. The <code><span class="identifier">symlink_option</span></code>
                enum is now deprecated and should be replaced with <code><span class="identifier">directory_options</span></code>.
              </div>
            </li>
            <li>
              <div>
                By default, <code><span class="identifier">recursive_directory_iterator</span></code>
                is now reset to the end state in case of errors, as required by C++20.
                (<a href="https://github.com/boostorg/filesystem/issues/112">#112</a>)
              </div>
            </li>
            <li>
              <div>
                <strong>New:</strong> Added <code><span class="identifier">directory_options</span><span class="special">::</span><span class="identifier">pop_on_error</span></code>
                option, which configures <code><span class="identifier">recursive_directory_iterator</span></code>
                so that it attempts to recover from iteration errors by repeatedly
                invoking <code><span class="identifier">pop</span><span class="special">()</span></code>
                until it succeeds or the end state is reached. (<a href="https://github.com/boostorg/filesystem/issues/113">#113</a>)
              </div>
            </li>
            <li>
              <div>
                <strong>New:</strong> Added <code><span class="identifier">directory_options</span><span class="special">::</span><span class="identifier">skip_dangling_symlinks</span></code>
                option, which configures <code><span class="identifier">recursive_directory_iterator</span></code>
                so that it doesn't follow dangling directory symlinks and continues
                iteration instead of reporting an error.
              </div>
            </li>
            <li>
              <div>
                <strong>Deprecated:</strong> The following members
                of <code><span class="identifier">recursive_directory_iterator</span></code>
                are now marked as deprecated: <code><span class="identifier">level</span><span class="special">()</span></code>, <code><span class="identifier">no_push_pending</span><span class="special">()</span></code>, <code><span class="identifier">no_push_request</span><span class="special">()</span></code>, <code><span class="identifier">no_push</span><span class="special">()</span></code>. Users are advised to replace their
                use with the standard counterparts: <code><span class="identifier">depth</span><span class="special">()</span></code>, <code><span class="identifier">recursion_pending</span><span class="special">()</span></code>, <code><span class="identifier">disable_recursion_pending</span><span class="special">()</span></code>. Note that <code><span class="identifier">recursion_pending</span><span class="special">()</span></code> has the opposite meaning compared
                to <code><span class="identifier">no_push_pending</span><span class="special">()</span></code> and <code><span class="identifier">no_push_request</span><span class="special">()</span></code>. Deprecated methods will be removed
                in a future release.
              </div>
            </li>
            <li>
              <div>
                Fixed <code><span class="identifier">path</span><span class="special">::</span><span class="identifier">lexically_relative</span></code> (and any dependent
                algorithms) to correctly handle empty, dot and dot-dot path elements
                in its argument. The behavior is made closer to C++17 <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">path</span><span class="special">::</span><span class="identifier">lexically_relative</span></code> in that empty
                and dot path elements are ignored and dot-dot path elements are accounted
                by decreasing the number of dot-dot path elements to generate in
                the resulting relative path. (<a href="https://github.com/boostorg/filesystem/issues/76">#76</a>)
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/functional/factory/">Functional/Factory</a>:</span>
          <ul>
            <li>
              <div>
                Glen Fernandes rewrote the implementations of <code><span class="identifier">factory</span></code>
                and <code><span class="identifier">value_factory</span></code>
                to provide the following features:
                <ul>
                  <li>
                    <div>
                      Support r-value arguments when possible
                    </div>
                  </li>
                  <li>
                    <div>
                      Support arbitrary number of arguments via variadic templates
                      when possible
                    </div>
                  </li>
                  <li>
                    <div>
                      Support allocators that are final
                    </div>
                  </li>
                  <li>
                    <div>
                      Support allocators that use fancy pointers
                    </div>
                  </li>
                  <li>
                    <div>
                      Support for disabled exceptions (<code><span class="identifier">BOOST_NO_EXCEPTIONS</span></code>)
                    </div>
                  </li>
                  <li>
                    <div>
                      Improved compilation times
                    </div>
                  </li>
                </ul>
              </div>
            </li>
            <li>
              <div>
                The following features have been removed:
                <ul>
                  <li>
                    <div>
                      Increasing limits for C++03 compilers through <code><span class="identifier">BOOST_FUNCTIONAL_VALUE_FACTORY_MAX_ARITY</span></code>
                    </div>
                  </li>
                  <li>
                    <div>
                      Using <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">none_t</span></code>
                      in place of <code><span class="keyword">void</span></code>
                      through <code><span class="identifier">BOOST_FUNCTIONAL_FACTORY_SUPPORT_NONE_T</span></code>
                    </div>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/gil/">GIL</a>:</span>
          <ul>
            <li>
              <div>
                Added
                <ul>
                  <li>
                    <div>
                      GSoC 2019: Lanczos resampling for image down scaling (<a href="https://github.com/boostorg/gil/pull/309">PR #309</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Methods for binary thresholding, inverted binary
                      thresholding and truncation thresholding (<a href="https://github.com/boostorg/gil/pull/313">PR
                      #313</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Otsu thresholding method (<a href="https://github.com/boostorg/gil/pull/314">PR
                      #314</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Adaptive thresholding using mean or gaussian-weighted
                      sum of the neighbourhood area (<a href="https://github.com/boostorg/gil/pull/315">PR
                      #315</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Harris response calculation (corner detector without
                      non-maximum filtering) (<a href="https://github.com/boostorg/gil/pull/350">PR
                      #350</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Hessian corner detector (<a href="https://github.com/boostorg/gil/pull/364">PR
                      #364</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Types for defining 2D kernel, <code><span class="identifier">kernel_2d</span></code>
                      and <code><span class="identifier">kernel_2d_fixed</span></code>,
                      in Numeric extension (<a href="https://github.com/boostorg/gil/pull/361">PR
                      #361</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Implementation of 2D convolution as new function
                      <code><span class="identifier">convolve_2d</span></code>
                      (<a href="https://github.com/boostorg/gil/pull/367">PR #367</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Box filtering using the average filter (<a href="https://github.com/boostorg/gil/pull/383">PR
                      #383</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Blur function based on normalized mean filter (<a href="https://github.com/boostorg/gil/pull/383">PR #383</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Sobel and Scharr operators (<a href="https://github.com/boostorg/gil/pull/392">PR
                      #392</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      GSoC 2019: Median filter to remove noise from image (<a href="https://github.com/boostorg/gil/pull/393">PR #393</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Continued adding new test cases and significantly improved
                      overall test coverage.
                    </div>
                  </li>
                  <li>
                    <div>
                      Documented purpose of <code><span class="identifier">cached_location_t</span></code>
                      (<a href="https://github.com/boostorg/gil/pull/287">PR #287</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Function <code><span class="identifier">convolve_1d</span></code>
                      in Numeric extension for convenient use of <code><span class="identifier">convolve_rows</span></code>
                      and <code><span class="identifier">convolve_cols</span></code>
                      (<a href="https://github.com/boostorg/gil/pull/347">PR #347</a>)
                      and <a href="https://github.com/boostorg/gil/pull/367">PR
                      #367</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Function <code><span class="identifier">extend_boundary</span></code>
                      in Numeric extension to perform image boundary extension (<a href="https://github.com/boostorg/gil/pull/386">PR #386</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Project release notes maintained in Markdown file <code><span class="identifier">RELEASES</span><span class="special">.</span><span class="identifier">md</span></code> (<a href="https://github.com/boostorg/gil/pull/404">PR
                      #404</a>).
                    </div>
                  </li>
                </ul>
              </div>
            </li>
            <li>
              <div>
                Changed
                <ul>
                  <li>
                    <div>
                      Move all tests, core features and extensions, inside <code><span class="identifier">test</span><span class="special">/</span></code>
                      directory (<a href="https://github.com/boostorg/gil/pull/302">PR
                      #302</a>).
                    </div>
                  </li>
                </ul>
              </div>
            </li>
            <li>
              <div>
                Removed
                <ul>
                  <li>
                    <div>
                      Replace Boost.MPL with Boost.MP11 (<a href="https://github.com/boostorg/gil/pull/274">PR
                      #274</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Removed use of Boost.TypeTraits (<a href="https://github.com/boostorg/gil/pull/274">PR
                      #274</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Dropped support for GCC &lt;= 4.8 (<a href="https://github.com/boostorg/gil/pull/296">PR
                      #296</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Remove <code><span class="identifier">include</span><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">gil</span><span class="special">/</span><span class="identifier">version</span><span class="special">.</span><span class="identifier">hpp</span></code>
                      file as unused (<a href="https://github.com/boostorg/gil/pull/403">PR
                      #403</a>).
                    </div>
                  </li>
                </ul>
              </div>
            </li>
            <li>
              <div>
                Fixed
                <ul>
                  <li>
                    <div>
                      Undetermined value of default-initialized channel and pixel
                      objects (<a href="https://github.com/boostorg/gil/pull/273">PR
                      #273</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Undefined behaviour due to <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_trivially_default_constructible</span></code>
                      specializations (<a href="https://github.com/boostorg/gil/pull/284">PR
                      #284</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Crash when reading PNG files with an invalid header (<a href="https://github.com/boostorg/gil/pull/385">PR #385</a>).
                    </div>
                  </li>
                  <li>
                    <div>
                      Applied the Rule of Three for numerous types.
                    </div>
                  </li>
                  <li>
                    <div>
                      Removed uses of deprecated implicit definition of defaulted
                      copy assignment operator or copy constructor.
                    </div>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/histogram/">Histogram</a>:</span>
          <ul>
            <li>
              <div>
                Several new features and performance improvements, some bug-fixes
              </div>
            </li>
            <li>
              <div>
                See the full <a href="/libs/histogram/doc/html/histogram/history.html">Release
                Notes</a> for a complete list of changes
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/log/">Log</a>:</span>
          <ul>
            <li>
              <div>
                Improved compatibility with clang-win compiler.
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/mpi/">MPI</a>:</span>
          <ul>
            <li>
              <div>
                Documentation clarifications.
              </div>
            </li>
            <li>
              <div>
                Fixed scatterv bug when using explicit input buffer offsets.
              </div>
            </li>
            <li>
              <div>
                Enable usage of MPI_Probe and friend with Intel MPI &gt;= 2019.4
              </div>
            </li>
            <li>
              <div>
                Symbol visibility on Windows
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/math/">Math</a>:</span>
          <ul>
            <li>
              <div>
                Added Hypergeometric functions 1F0, 0F1, 2F0, 1F1 and pFq.
              </div>
            </li>
            <li>
              <div>
                Added Jacobi polynomial (and derivatives) evaluation.
              </div>
            </li>
            <li>
              <div>
                Added Gegenbauer polynomial (and derivatives) evaluation.
              </div>
            </li>
            <li>
              <div>
                Added Cardinal B-Splines (and derivatives) as polynomial functions
                in their own right.
              </div>
            </li>
            <li>
              <div>
                Added Cardinal Trigonometric Interpolation.
              </div>
            </li>
            <li>
              <div>
                Added new statistics sub-section.
              </div>
            </li>
            <li>
              <div>
                Added One Sample Student's T Test.
              </div>
            </li>
            <li>
              <div>
                Added Anderson Darling test for normality.
              </div>
            </li>
            <li>
              <div>
                Added Ljung Box test for auto-correlation.
              </div>
            </li>
            <li>
              <div>
                Added Runs test for random sequences.
              </div>
            </li>
            <li>
              <div>
                The headers <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">univariate_statistics</span><span class="special">.</span><span class="identifier">hpp</span></code>
                and <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">bivariate_statistics</span><span class="special">.</span><span class="identifier">hpp</span></code>, have been deprecated in favor
                of <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">statistics</span><span class="special">/</span><span class="identifier">univariate_statistics</span><span class="special">.</span><span class="identifier">hpp</span></code> and <code><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">statistics</span><span class="special">/</span><span class="identifier">bivariate_statistics</span><span class="special">.</span><span class="identifier">hpp</span></code>.
              </div>
            </li>
            <li>
              <div>
                Added The Empirical CDF distribution.
              </div>
            </li>
            <li>
              <div>
                Reworked the Sterling approximation used by multiprecision gamma
                functions to be applicable to all the function that use the Lanczos
                approximation at regular precision. Also extended Lanczos approximations
                up to 100 decimal digit precision.
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/multiprecision/">Multiprecision</a>:</span>
          <ul>
            <li>
              <div>
                Big <code><span class="keyword">constexpr</span></code> update
                allows cpp_int and float128 arithmetic to be fully <code><span class="keyword">constexpr</span></code> with gcc and clang 9 or
                later, or any compiler supporting <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_constant_evaluated</span><span class="special">()</span></code>.
              </div>
            </li>
            <li>
              <div>
                Fix bug in variable precision mpf_float which causes it to go into
                a tailspin trying to select the correct precision - see https://github.com/boostorg/multiprecision/issues/164.
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/outcome/">Outcome</a>:</span>
          <ul>
            <li>
              <div>
                Enhancements:
                <ul>
                  <li>
                    <div>
                      Standalone outcome is now <code><span class="identifier">make</span>
                      <span class="identifier">install</span></code>-able, and
                      cmake <code><span class="identifier">find_package</span><span class="special">()</span></code> can find it. Note that you
                      must separately install and <code><span class="identifier">find_package</span><span class="special">()</span></code> Outcome's dependency, quickcpplib,
                      else <code><span class="identifier">find_package</span><span class="special">()</span></code> of Outcome will fail.
                    </div>
                  </li>
                  <li>
                    <div>
                      The git submodule mechanism used by standalone Outcome of specifying
                      dependent libraries has been replaced with a cmake superbuild
                      of dependencies mechanism instead. Upon cmake configure, an
                      internal copy of quickcpplib will be git cloned, built and
                      installed into the build directory from where an internal
                      <code><span class="identifier">find_package</span><span class="special">()</span></code> uses it. This breaks the
                      use of the unconfigured Outcome repo as an implementation of
                      Outcome, one must now do one of: 1. Add Outcome as subdirectory
                      to cmake build. 2. Use cmake superbuild (i.e. <code><span class="identifier">ExternalProject_Add</span><span class="special">()</span></code>)
                      to build and install Outcome into a local installation. 3.
                      Use one of the single header editions.
                    </div>
                  </li>
                  <li>
                    <div>
                      For standalone Outcome, the current compiler is now checked
                      for whether it will compile code containing C++ Concepts, and
                      if it does, all cmake consumers of Outcome will enable C++
                      Concepts. Set the cmake variable <code><span class="identifier">CXX_CONCEPTS_FLAGS</span></code>
                      to an empty string to prevent auto detection and enabling of
                      C++ Concepts support occurring.
                    </div>
                  </li>
                  <li>
                    <div>
                      <code><span class="identifier">OUTCOME_TRY</span></code>
                      operation now hints to the compiler that operation will be
                      successful. [P1886 <strong>Error speed benchmarking</strong>](https://wg21.link/P1886)
                      showed that there is considerable gain in very small functions
                      by hinting to the compiler whether the expression is expected
                      to be successful or not. <code><span class="identifier">OUTCOME_TRY</span></code>
                      previously did not hint to the compiler at all, but now it
                      does. A new suite of macros <code><span class="identifier">OUTCOME_TRY_FAILURE_LIKELY</span></code>
                      hint to the compiler that failure is expected. If you wish
                      to return to the previously unhinted behaviour, define <code><span class="identifier">OUTCOME_TRY_LIKELY</span><span class="special">(</span><span class="identifier">expr</span><span class="special">)</span></code>
                      to <code><span class="special">(!!</span><span class="identifier">expr</span><span class="special">)</span></code>.
                    </div>
                  </li>
                  <li>
                    <div>
                      <a href="https://github.com/ned14/outcome/issues/199">#199</a>
                      Support for C++ Coroutines has been added. This comes in two
                      parts, firstly there is now an <code><span class="identifier">OUTCOME_CO_TRY</span><span class="special">()</span></code> operation suitable for performing
                      the <code><span class="identifier">TRY</span></code> operation
                      from within a C++ Coroutine. Secondly, in the header <code><span class="identifier">outcome</span><span class="special">/</span><span class="identifier">coroutine_support</span><span class="special">.</span><span class="identifier">hpp</span></code> there are implementations
                      of <code><span class="identifier">eager</span><span class="special">&lt;</span><span class="identifier">OutcomeType</span><span class="special">&gt;</span></code>
                      and <code><span class="identifier">lazy</span><span class="special">&lt;</span><span class="identifier">OutcomeType</span><span class="special">&gt;</span></code>
                      which let you more naturally and efficiently use <code><span class="identifier">basic_result</span></code> or <code><span class="identifier">basic_outcome</span></code> from within
                      C++ Coroutines -- specifically, if the result or outcome will
                      construct from an exception pointer, exceptions thrown in the
                      coroutine return an errored or excepted result with the thrown
                      exception instead of throwing the exception through the coroutine
                      machinery (which in current compilers, has a high likelihood
                      of blowing up the program). Both <code><span class="identifier">eager</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> and <code><span class="identifier">lazy</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> can accept any <code><span class="identifier">T</span></code> as well. Both have been
                      tested and found working on VS2019 and clang 9.
                    </div>
                  </li>
                  <li>
                    <div>
                      <a href="https://github.com/ned14/outcome/issues/210">#210</a>
                      <code><span class="identifier">make_error_code</span><span class="special">()</span></code> and <code><span class="identifier">make_exception_ptr</span><span class="special">()</span></code> are now additionally considered
                      for compatible copy and move conversions for <code><span class="identifier">basic_result</span><span class="special">&lt;&gt;</span></code>.
                      This lets you construct a <code><span class="identifier">basic_result</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">&gt;</span></code> into a <code><span class="identifier">basic_result</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">error_code</span><span class="special">&gt;</span></code>, where <code><span class="identifier">E</span></code>
                      is a custom type which has implemented the ADL discovered free
                      function <code><span class="identifier">error_code</span>
                      <span class="identifier">make_error_code</span><span class="special">(</span><span class="identifier">E</span><span class="special">)</span></code>,
                      but is otherwise unrelated to <code><span class="identifier">error_code</span></code>.
                      The same availability applies for <code><span class="identifier">exception_ptr</span></code>
                      with <code><span class="identifier">make_exception_ptr</span><span class="special">()</span></code> being the ADL discovered
                      free function. <code><span class="identifier">basic_outcome</span><span class="special">&lt;&gt;</span></code> has less support for
                      this than <code><span class="identifier">basic_result</span><span class="special">&lt;&gt;</span></code> in order to keep constructor
                      count down, but it will accept via this mechanism conversions
                      from <code><span class="identifier">basic_result</span><span class="special">&lt;&gt;</span></code> and <code><span class="identifier">failure_type</span><span class="special">&lt;&gt;</span></code>.
                    </div>
                  </li>
                </ul>
              </div>
            </li>
            <li>
              <div>
                Bug fixes:
                <ul>
                  <li>
                    <div>
                      <a href="https://github.com/ned14/outcome/issues/184">#184</a>
                      The detection of <code><span class="special">[[</span><span class="identifier">nodiscard</span><span class="special">]]</span></code>
                      support in the compiler was very mildly broken.
                    </div>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/poly_collection/">PolyCollection</a>:</span>
          <ul>
            <li>
              <div>
                Maintenance work.
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/preprocessor/">Preprocessor</a>:</span>
          <ul>
            <li>
              <div>
                Topic added which discusses emptiness
              </div>
            </li>
            <li>
              <div>
                Support for the C++20 <code><span class="identifier">__VA_OPT__</span></code>
                construct
                <ul>
                  <li>
                    <div>
                      <code><span class="identifier">BOOST_PP_VARIADIC_HAS_OPT</span></code>
                      whether <code><span class="identifier">__VA_OPT__</span></code>
                      is supported at the C++20 level
                    </div>
                  </li>
                  <li>
                    <div>
                      <code><span class="identifier">BOOST_PP_CHECK_EMPTY</span></code>
                      test for emptiness using <code><span class="identifier">__VA_OPT__</span></code>
                      at the C++20 level
                    </div>
                  </li>
                  <li>
                    <div>
                      <code><span class="identifier">BOOST_PP_VA_OPT</span></code>
                      more flexible alternative to <code><span class="identifier">__VA_OPT__</span></code>
                      at the C++20 level
                    </div>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/smart_ptr/">Smart Pointers</a>:</span>
          <ul>
            <li>
              <div>
                Implemented <code><span class="identifier">allocate_unique</span></code>
                for scalars and arrays. (Glen Fernandes)
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/test/">Test</a>:</span>
          <ul>
            <li>
              <div>
                Boost.test v3.12 see the <a href="/libs/test/doc/html/boost_test/change_log.html">Changes
                log</a> for more details.
              </div>
            </li>
            <li>
              <div>
                New feature:
                <ul>
                  <li>
                    <div>
                      Support for C++17 <code><span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span></code>
                      has been added.
                    </div>
                  </li>
                  <li>
                    <div>
                      Better diagnostic on <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">exception</span></code>
                      and no rtti mode (thanks to Mikhail Pilin / [pull_request 234])
                    </div>
                  </li>
                </ul>
              </div>
            </li>
            <li>
              <div>
                Bug fixes and pull requests:
                <ul>
                  <li>
                    <div>
                      GitHub Issues: <a href="https://github.com/boostorg/test/issues/206">#206</a>, <a href="https://github.com/boostorg/test/issues/217">#217</a>, <a href="https://github.com/boostorg/test/issues/223">#223</a>, <a href="https://github.com/boostorg/test/issues/229">#229</a>
                    </div>
                  </li>
                  <li>
                    <div>
                      GitHub Pull Requests: <a href="https://github.com/boostorg/test/pull/227">PR#227</a>, <a href="https://github.com/boostorg/test/pull/231">PR#231</a>, <a href="https://github.com/boostorg/test/pull/232">PR#232</a>,
                      <a href="https://github.com/boostorg/test/pull/234">PR#234</a>
                    </div>
                  </li>
                </ul>
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          <span class="library"><a href="/libs/vmd/">VMD</a>:</span>
          <ul>
            <li>
              <div>
                <code><span class="identifier">BOOST_VMD_IS_EMPTY</span></code>
                updated to use <code><span class="identifier">__VA_OPT__</span></code>
                at the C++20 level has 100% reliability
              </div>
            </li>
          </ul>
        </div>
      </li>
    </ul>
  </div>
  <div id="version_1_72_0.compilers_tested">
    <h3><span class="link">Compilers Tested</span></h3>
    <p>
      Boost's primary test compilers are:
    </p>
    <ul>
      <li>
        <div>
          Linux:
          <ul>
            <li>
              <div>
                Clang: 3.0, 4.0.1, 6.0.1
              </div>
            </li>
            <li>
              <div>
                Clang, C++0x: 3.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2,
                6.0.1, 7.0.0, 8.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
              </div>
            </li>
            <li>
              <div>
                GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
              </div>
            </li>
            <li>
              <div>
                GCC, C++0x: 4.4.7
              </div>
            </li>
            <li>
              <div>
                GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
              </div>
            </li>
            <li>
              <div>
                GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
              </div>
            </li>
            <li>
              <div>
                GCC, C++17: 7.3.0, 8.0.1
              </div>
            </li>
            <li>
              <div>
                Intel, C++14: 18.0
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          OS X:
          <ul>
            <li>
              <div>
                Apple Clang: 9.0.0, 9.1.0, 10.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++17: 9.1.0, 10.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++1z: 9.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++2a: 10.0.0
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          Windows:
          <ul>
            <li>
              <div>
                GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
              </div>
            </li>
            <li>
              <div>
                GCC, C++0x: 4.6.4
              </div>
            </li>
            <li>
              <div>
                GCC, C++11: 4.7.3, 4.8.1, 4.9.3
              </div>
            </li>
            <li>
              <div>
                GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
              </div>
            </li>
            <li>
              <div>
                GCC, C++17: 7.1.0, 7.2.0, 7.3.0
              </div>
            </li>
            <li>
              <div>
                Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          FreeBSD:
          <ul>
            <li>
              <div>
                Clang: 4.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++11: 4.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++14: 4.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++1z: 4.0.0
              </div>
            </li>
          </ul>
        </div>
      </li>
    </ul>
    <p>
      Boost's additional test compilers include:
    </p>
    <ul>
      <li>
        <div>
          Linux:
          <ul>
            <li>
              <div>
                Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
              </div>
            </li>
            <li>
              <div>
                Clang, C++0x: 3.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2,
                6.0.1, 7.0.0, 8.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
              </div>
            </li>
            <li>
              <div>
                GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
              </div>
            </li>
            <li>
              <div>
                GCC, C++0x: 4.4.7
              </div>
            </li>
            <li>
              <div>
                GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
              </div>
            </li>
            <li>
              <div>
                GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
              </div>
            </li>
            <li>
              <div>
                GCC, C++17: 7.3.0, 8.0.1
              </div>
            </li>
            <li>
              <div>
                Intel, C++14: 18.0
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          OS X:
          <ul>
            <li>
              <div>
                Apple Clang: 9.0.0, 9.1.0, 10.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++17: 9.1.0, 10.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++1z: 9.0.0
              </div>
            </li>
            <li>
              <div>
                Apple Clang, C++2a: 10.0.0
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          Windows:
          <ul>
            <li>
              <div>
                GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
              </div>
            </li>
            <li>
              <div>
                GCC, C++0x: 4.6.4
              </div>
            </li>
            <li>
              <div>
                GCC, C++11: 4.7.3, 4.8.1, 4.9.3
              </div>
            </li>
            <li>
              <div>
                GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
              </div>
            </li>
            <li>
              <div>
                GCC, C++17: 7.1.0, 7.2.0, 7.3.0
              </div>
            </li>
            <li>
              <div>
                Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
              </div>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div>
          FreeBSD:
          <ul>
            <li>
              <div>
                Clang: 4.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++11: 4.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++14: 4.0.0
              </div>
            </li>
            <li>
              <div>
                Clang, C++1z: 4.0.0
              </div>
            </li>
          </ul>
        </div>
      </li>
    </ul>
  </div>
  <div id="version_1_72_0.acknowledgements">
    <h3><span class="link">Acknowledgements</span></h3>
    <p>
      Marshall Clow and Michael Caisse managed this release.
    </p>
  </div>
</div>
              </div>
            </div>
          </div>
        </div>
      </div>

      <div id="sidebar">
        <!--#include virtual="/common/sidebar-common.html" --><!--#include virtual="/common/sidebar-boost.html" -->      </div>

      <div class="clear"></div>
    </div>
  </div>

  <div id="footer">
    <div id="footer-left">
      <div id="copyright">
        <p>Copyright Rene Rivera 2006-2007.</p>
      </div><!--#include virtual="/common/footer-license.html" -->    </div>

    <div id="footer-right">
      <!--#include virtual="/common/footer-banners.html" -->    </div>

    <div class="clear"></div>
  </div>
</body>
</html>
